Java-তে annotations হলো meta-data যা প্রোগ্রাম কোডের বিভিন্ন অংশকে নির্দেশ করতে ব্যবহৃত হয়। এগুলি মূলত কম্পাইলার এবং runtime environment-এর জন্য হালকা ওজনের নির্দেশনা হিসাবে কাজ করে। Custom annotation হলো ডেভেলপারদের দ্বারা তৈরি বিশেষ annotations, যা নির্দিষ্ট প্রয়োজনে কোডে যোগ করা যায়।
Custom Annotations কীভাবে তৈরি করবেন?
Custom annotation তৈরি করতে @interface কীওয়ার্ড ব্যবহার করা হয়। এটি একটি ইন্টারফেসের মতো কাজ করে যা বিভিন্ন meta-data attribute ধারণ করতে পারে।
একটি Custom Annotation এর উদাহরণ:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
// Custom Annotation Definition
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface JacksonInfo {
String author();
String version();
}
Explanation:
- @Retention: এই annotation নির্দেশ করে যে annotation টির lifespan কতক্ষণ থাকবে।
RetentionPolicy.RUNTIME: এটি runtime পর্যন্ত থাকবে।RetentionPolicy.CLASS: এটি compile time পর্যন্ত থাকবে।RetentionPolicy.SOURCE: এটি compile এর পরে মুছে যাবে।
- @Target: এটি নির্দেশ করে annotation কোথায় ব্যবহার করা যাবে। যেমন, method, class, field ইত্যাদি।
Custom Annotation প্রয়োগ
উপরের annotation-টি একটি ক্লাস এবং মেথডে প্রয়োগ করা যেতে পারে।
@JacksonInfo(author = "John Jackson", version = "1.0")
public class MyService {
@JacksonInfo(author = "Jane Doe", version = "1.2")
public void execute() {
System.out.println("Executing Service...");
}
}
Custom Annotation প্রক্রিয়া করা (Processing)
Custom annotation ব্যবহার করে runtime-এ এর ডেটা retrieve করার জন্য Reflection API ব্যবহার করা হয়।
import java.lang.reflect.Method;
public class AnnotationProcessor {
public static void main(String[] args) {
try {
// ক্লাস লোড করা
Class<MyService> obj = MyService.class;
// ক্লাস-এ থাকা annotation খুঁজে বের করা
if (obj.isAnnotationPresent(JacksonInfo.class)) {
JacksonInfo info = obj.getAnnotation(JacksonInfo.class);
System.out.println("Class Author: " + info.author());
System.out.println("Class Version: " + info.version());
}
// মেথড-এ থাকা annotation খুঁজে বের করা
for (Method method : obj.getDeclaredMethods()) {
if (method.isAnnotationPresent(JacksonInfo.class)) {
JacksonInfo info = method.getAnnotation(JacksonInfo.class);
System.out.println("Method: " + method.getName());
System.out.println("Author: " + info.author());
System.out.println("Version: " + info.version());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Custom Annotations এর ব্যবহার
- Configuration Management: Custom annotations ব্যবহার করে কনফিগারেশন সংরক্ষণ করা যায়।
- Validation Frameworks: Input validation করতে custom annotations কার্যকর।
- Dependency Injection: Spring বা অন্যান্য frameworks-এ dependency injection এর জন্য custom annotations ব্যবহৃত হয়।
- Logging and Monitoring: Custom annotations ব্যবহার করে logging এবং monitoring এর কাজ স্বয়ংক্রিয় করা যায়।
Custom annotations Java প্রোগ্রামিং-এ উন্নত এবং modular কোডিং এর জন্য অপরিহার্য। এটি কোডকে আরও বেশি সংহত, সংজ্ঞায়িত, এবং পুনর্ব্যবহারযোগ্য করে তোলে।
Read more